﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ObligatorioBD.MerObjects;

namespace ObligatorioBD
{
    public partial class frmNewDatabase : Form
    {
        ObligatorioBD.MerObjects.Mer mer;

        public frmNewDatabase(Mer mer)
        {
            this.mer = mer;
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void frmNewDatabase_Load(object sender, EventArgs e)
        {
            this.txtDbName.Text = this.mer.Name;
            this.txtDbName.Text = this.txtDbName.Text.Replace(' ', '_');
            this.txtDbName.Focus();
            this.txtDbName.SelectAll();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            try
            {
                string databaseName = txtDbName.Text;
                if (databaseName.Contains(" "))
                {
                    throw new Exception("El nombre de la base no puede contener espacios en blanco");
                }
                char primer = databaseName[0];
                int i;
                if (int.TryParse(primer.ToString(), out i))
                {
                    throw new Exception("El nombre de la base no puede comenzar con un número");
                }
                ObligatorioBD.Logic.DatabaseBuilder builder = new Logic.DatabaseBuilder(new DatabaseInterface.Connection(), databaseName);
                if (builder.CheckNameAvailability())
                {
                    DialogResult r = MessageBox.Show("Esa base de datos ya existe. Si continua las nuevas tablas \rserán creadas en la base de datos existentes\rDesea continuar?", "Atención", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (r == System.Windows.Forms.DialogResult.Yes)
                    {
                        builder.BuildDatabaseAsync(this.mer);
                        
                    }
                }
                else
                {
                    builder.BuildDatabaseAsync(this.mer);
                   
                }
                MessageBox.Show("Base de datos creada con éxito!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
                

            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                MessageBox.Show(ex.Message, "Nombre incorrecto", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            this.Cursor = Cursors.Default;
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
